<?php
  function https_request($url,$data = null){
	  $curl = curl_init();
	  curl_setopt($curl, CURLOPT_URL, $url);
	  curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
	  curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
	  if (!empty($data)){
		  curl_setopt($curl, CURLOPT_POST, 1);
		  curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
	  }
	  curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
	  $output = curl_exec($curl);
	  curl_close($curl);
	  return $output;
  }
  function http_get($url){
		$oCurl = curl_init();
		if(stripos($url,"https://")!==FALSE){
			curl_setopt($oCurl, CURLOPT_SSL_VERIFYPEER, FALSE);
			curl_setopt($oCurl, CURLOPT_SSL_VERIFYHOST, FALSE);
			curl_setopt($oCurl, CURLOPT_SSLVERSION, 1); //CURL_SSLVERSION_TLSv1
		}
		curl_setopt($oCurl, CURLOPT_URL, $url);
		curl_setopt($oCurl, CURLOPT_RETURNTRANSFER, 1 );
		$sContent = curl_exec($oCurl);
		$aStatus = curl_getinfo($oCurl);
		curl_close($oCurl);
		if(intval($aStatus["http_code"])==200){
			return $sContent;
		}else{
			return false;
		}
	}
	 /**
   * 下载远程图片到服务器
   */
   function download_img_curl($file_url, $save_to)
	{
		$ch = curl_init();
		curl_setopt($ch, CURLOPT_POST, 0); 
		curl_setopt($ch,CURLOPT_URL,$file_url); 
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
		$file_content = curl_exec($ch);
		curl_close($ch);
 
		$downloaded_file = fopen($save_to, 'w');
		fwrite($downloaded_file, $file_content);
		fclose($downloaded_file);
	}
  function array_page($array,$rows){
	$count=count($array);
	$Page= new \Think\Page($count,$rows);// 实例化分页类 传入总记录数和每页显示的记录数(25)
	$show=$Page->show();// 分页显示输出
	$list=array_slice($array,$Page->firstRow,$Page->listRows);
	return array($list,$show);
  }

 
 
   function jsapi(){
        $Token_Url ="http://token.junshencm.com/tokens/jsapi.php?appid=wx006b3cfb80de8752&appsecret=96e905fd96f87d72cf3bda017d70c561";
		$jsapi['token']='qq1129426262';
		$jsapi['appid']='wx006b3cfb80de8752';
		$jsapi['appsecret']='96e905fd96f87d72cf3bda017d70c561';
		$jsapi['logcallback']='logdebug';
		$jsapi['access_token']=json_decode(http_get($Token_Url))->access_token;
		$jsapi['jsapi_ticket']=json_decode(http_get($Token_Url))->jsapi_ticket;
		return $jsapi;
	}
	function jsapiy(){
		$Token_Url ="http://token.junshencm.com/tokens/jsapi.php?appid=".C('appid')."&appsecret=".C('appsecret');
		$jsapi['access_token']=json_decode(file_get_contents($Token_Url))->access_token;
		return $jsapi;
	}
	function  upload($name_pic,$files){
		 $upload = new \Think\Upload();// 实例化上传类
		 $upload->maxSize=3333145728 ;// 设置附件上传大小
	     $upload->exts=array('jpg', 'gif', 'png', 'jpeg');// 设置附件上传类型
		 $upload->autoSub = true;
		 $upload->subName =$name_pic;
	      $upload->saveName = 'time';
		 $upload->rootPath='./Public/uploads/'; // 设置附件上传目录    // 上传单个文件
	     $info=$upload->uploadOne($files);
		 if(!$info) {// 上传错误提示错误信息
		return $this->error($upload->getError(),18);
		}else{// 上传成功 获取上传文件信息
		return $info['savepath'].$info['savename'];	  
	    }
	}
	  /**
   * 删除目录及目录下所有文件或删除指定文件
   * @param str $path   待删除目录路径
   * @param int $delDir 是否删除目录，1或true删除目录，0或false则只删除文件保留目录（包含子目录）
   * @return bool 返回删除状态
   */
   function delDirAndFile($path, $delDir = FALSE) {
	  $handle = opendir($path);
	  if ($handle) {
		  while (false !== ( $item = readdir($handle) )) {
			  if ($item != "." && $item != "..")
				  is_dir("$path/$item") ? delDirAndFile("$path/$item", $delDir) : unlink("$path/$item");
		  }
		  closedir($handle);
		  if ($delDir)
			  return rmdir($path);
	  }else {
		  if (file_exists($path)) {
			  return unlink($path);
		  } else {
			  return FALSE;
		  }
	  }
   }	
  function unlinks($path){
	if (file_exists($path)) {
		unlink ($path);
	 }
  }
  // 检测验证码
  function check_verify($code){
	  $verify=new \Think\Verify();
	  return $verify->check($code);
  }
  /**
   * 获取一定范围内的随机数字
   * 跟rand()函数的区别是 位数不足补零 例如
   * rand(1,9999)可能会得到 465
   * rand_number(1,9999)可能会得到 0465  保证是4位的
   * @param integer $min 最小值
   * @param integer $max 最大值
   * @return string
   */
  function rand_number($min=1, $max=9999) {
	  return sprintf("%0".strlen($max)."d", mt_rand($min,$max));
  }
  /**
   * 发送 容联云通讯 验证码
   * @param  int $phone 手机号
   * @param  int $code  验证码
   * @return boole      是否发送成功
   */
  function send_sms_code($phone,$code){
	  //请求地址，格式如下，不需要写https://
	  $serverIP='sandboxapp.cloopen.com';
	  //请求端口
	  $serverPort='8883';
	  //REST版本号
	  $softVersion='2013-12-26';
	  //主帐号
	  $accountSid=C('RONGLIAN_ACCOUNT_SID');
	  //主帐号Token
	  $accountToken=C('RONGLIAN_ACCOUNT_TOKEN');
	  //应用Id
	  $appId=C('RONGLIAN_APPID');
	  //应用Id
	  $templateId=C('RONGLIAN_TEMPLATE_ID');
	  $rest = new \Org\Xb\Rest($serverIP,$serverPort,$softVersion);
	  $rest->setAccount($accountSid,$accountToken);
	  $rest->setAppId($appId);
	  // 发送模板短信
	  $result=$rest->sendTemplateSMS($phone,array($code,3),$templateId);
	  if($result==NULL) {
		  return false;
	  }
	  if($result->statusCode!=0) {
		  return  false;
	  }else{
		  return true;
	  }
  }
  /*********************************************************************
	  函数名称:str_encrypt
	  函数作用:加密解密字符串
	  使用方法:
	  加密     :str_encrypt('str','E','nowamagic');
	  解密     :str_encrypt('被加密过的字符串','D','nowamagic');
	  参数说明:
	  $string   :需要加密解密的字符串
	  $operation:判断是加密还是解密:E:加密   D:解密
	  $key      :加密的钥匙(密匙);
	  *********************************************************************/
  
  function str_encrypt($string,$operation,$key='')
	  {
		  $key=md5($key);
		  $key_length=strlen($key);
		  $string=$operation=='D'?base64_decode($string):substr(md5($string.$key),0,8).$string;
		  $string_length=strlen($string);
		  $rndkey=$box=array();
		  $result='';
		  for($i=0;$i<=255;$i++)
		  {
			  $rndkey[$i]=ord($key[$i%$key_length]);
			  $box[$i]=$i;
		  }
		  for($j=$i=0;$i<256;$i++)
		  {
			  $j=($j+$box[$i]+$rndkey[$i])%256;
			  $tmp=$box[$i];
			  $box[$i]=$box[$j];
			  $box[$j]=$tmp;
		  }
		  for($a=$j=$i=0;$i<$string_length;$i++)
		  {
			  $a=($a+1)%256;
			  $j=($j+$box[$a])%256;
			  $tmp=$box[$a];
			  $box[$a]=$box[$j];
			  $box[$j]=$tmp;
			  $result.=chr(ord($string[$i])^($box[($box[$a]+$box[$j])%256]));
		  }
		  if($operation=='D')
		  {
			  if(substr($result,0,8)==substr(md5(substr($result,8).$key),0,8))
			  {
				  return substr($result,8);
			  }
			  else
			  {
				  return'';
			  }
		  }
		  else
		  {
			  return str_replace('=','',base64_encode($result));
		  }
  }
?>